package com.gpstracking.BE;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Notificacioncondicion entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "notificacioncondicion", catalog = "gpstracking")
public class Notificacioncondicion implements java.io.Serializable {

	// Fields

	private NotificacioncondicionId id;
	private Notificacion notificacion;
	private Condicion condicion;
	private Boolean habilitado;
	private Set<Eventonotificacioncondicion> eventonotificacioncondicions = new HashSet<Eventonotificacioncondicion>(
			0);

	// Constructors

	/** default constructor */
	public Notificacioncondicion() {
	}

	/** minimal constructor */
	public Notificacioncondicion(NotificacioncondicionId id,
			Notificacion notificacion, Condicion condicion, Boolean habilitado) {
		this.id = id;
		this.notificacion = notificacion;
		this.condicion = condicion;
		this.habilitado = habilitado;
	}

	/** full constructor */
	public Notificacioncondicion(NotificacioncondicionId id,
			Notificacion notificacion, Condicion condicion, Boolean habilitado,
			Set<Eventonotificacioncondicion> eventonotificacioncondicions) {
		this.id = id;
		this.notificacion = notificacion;
		this.condicion = condicion;
		this.habilitado = habilitado;
		this.eventonotificacioncondicions = eventonotificacioncondicions;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides({
			@AttributeOverride(name = "idNotificacion", column = @Column(name = "IdNotificacion", nullable = false)),
			@AttributeOverride(name = "idCondicion", column = @Column(name = "IdCondicion", nullable = false)) })
	public NotificacioncondicionId getId() {
		return this.id;
	}

	public void setId(NotificacioncondicionId id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "IdNotificacion", nullable = false, insertable = false, updatable = false)
	public Notificacion getNotificacion() {
		return this.notificacion;
	}

	public void setNotificacion(Notificacion notificacion) {
		this.notificacion = notificacion;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "IdCondicion", nullable = false, insertable = false, updatable = false)
	public Condicion getCondicion() {
		return this.condicion;
	}

	public void setCondicion(Condicion condicion) {
		this.condicion = condicion;
	}

	@Column(name = "Habilitado", nullable = false)
	public Boolean getHabilitado() {
		return this.habilitado;
	}

	public void setHabilitado(Boolean habilitado) {
		this.habilitado = habilitado;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "notificacioncondicion")
	public Set<Eventonotificacioncondicion> getEventonotificacioncondicions() {
		return this.eventonotificacioncondicions;
	}

	public void setEventonotificacioncondicions(
			Set<Eventonotificacioncondicion> eventonotificacioncondicions) {
		this.eventonotificacioncondicions = eventonotificacioncondicions;
	}

}